package main

/**

select 语句使得一个 goroutine 在多个通讯操作上等待。

select 会阻塞，直到条件分支中的某个可以继续执行，这时就会执行那个条件分支。当多个都准备好的时候，会随机选择一个

 */

func selectAccept(n, quit chan int) {
	for {
		select {
		//此处等待 n 或者 quit 的数据到来
		case val := <-n:
			println("n=", val)
		case <-quit:
			println("quit")
			return
		}
	}
}

func main() {
	dataChan := make(chan int)
	quit := make(chan int)
	go func(n chan int) {
		//此时异步发送数据
		n <- 1
		quit <- 0
	}(dataChan)
	selectAccept(dataChan, quit)
}
